In the age of streaming, users consume a significant amount of content through streaming technologies. As used herein, “content” may be audio, visual, audiovisual, or any type of content amenable to streaming. In general, streaming refers to providing content to a client over a network, where client consumes the content, in general, as it is received. Streaming may be implemented as a server-client architecture, peer-to-peer architecture, or combination or variant of architectures for which streaming may be appropriate or beneficial. In a server-client architecture, a server streams content to a client. In a peer-to-peer architecture, one peer (acting in a sense as a “server”) streams content to another peer (acting in a sense as a “client”). In general, in any other variant of network or architecture, a streaming device (“server”) streams content to a receiving device (“client”).
In a streaming application, the content is provided real-time, or at least in part real-time. “Real-time” generally refers to providing content at or around the time it will be consumed, as opposed to content that may be provided for subsequent consumption. Watching a video clip on YouTube™ is an example of real-time streaming. Downloading a file such as an MPEG for subsequent consumption, e.g., several hours or days after the download is complete, is an example of non-real-time consumption. Many variants and implementations of real-time and non-real-time applications are well-known in the art.
Many consumers of content desire to filter the content. Filtering may be desirable for a wide array of reasons: to remove objectionable material (e.g., mature content, nudity, vulgarity, obscenity, boring parts, etc.), to view an abbreviated version of content because of time constraints, to analyze the role of a particular character by viewing only the segments in which he appears, for language learning applications, and for any other purpose for which filtering may be appropriate, necessary, or effective.
Currently, consumers are not able, however, to satisfactorily filter streamed content. Some existing client-side filtering technologies work by simply omitting entire segments of streamed content, resulting in a choppy viewing, listening, or other type of consuming, experience. For example, Clearplay™ and VidAngel™ currently provide client-side filtering solutions.
Several hardware-based non-streaming filtering solutions exist, but they suffer from numerous drawbacks, including but not limited to: requiring a user to give up the convenience, wide availability, and other benefits of streaming; requiring a user to purchase expensive dedicated content playback hardware to carry out the filtering; and undesirable choppiness that often results when filtering is implemented by skipping an entire segment of a movie or other content.
HTTP Live Streaming (“HLS”) is quickly becoming the leading standard for content streaming. There is a need for a filtering solution for HLS and for other streaming technologies.
A further need exists for a filtering solution that satisfies the Family Home Move Act of 2005, codified at 17 U.S.C. §110(11). The Family Home Movie provides that it is not copyright infringement to “mak[e] imperceptible, by or at the direction of a member of a private household, [ ]limited portions of audio or video content of a motion picture, during a performance in or transmitted to that household for private home viewing, from an authorized copy of the motion picture, or [to] creat[e] or provi[de] a computer program or other technology that enables such making imperceptible and that is designed and marketed to be used, at the direction of a member of a private household, for such making imperceptible, if no fixed copy of the altered version of the motion picture is created by such computer program or other technology.”
Among other requirements, to be eligible for protection under the Family Home Act, a technology may not “create a fixed copy of the altered version.” The Streaming Filtering Solution disclosed herein, in at least some embodiments, functions without creating a fixed copy of an altered version of streamed content.